In a typical server-based computing environment, systems are often deployed along organizational lines such that the server resources used to support one entity, e.g., one department or one customer, are separated from the resources to support other entities. This is often the case, for example, in a Web site hosting or application service provider environment, where multiple companies are hosted on a single set of hardware, and it is critical that each company's data is isolated from all of the other companies' data.
While the motivation to separate server resources in this manner is understandable, the separation itself can present other problems. One problem is that requiring separate resources can make it more difficult for system administrators to configure the system to keep pace with changes in the organization or the customers that the system supports. Another problem is that such arbitrary separations often lead to the inefficient use of resources, as more than one department or customer likely has similar needs for a specific resource. For instance, in the Web site hosting environment, customers often logically group like Web sites for which users ideally should have a similar experience when using a specific set of services (personalization, search, etc.). But having separate server resources interferes with being able to ensure similar user experiences with the services in an efficient and reliable manner.
From the technical perspective, other problems with separate resources exist. For example, Web-deployed systems typically consist of loosely-tied groups of application servers, each with its own set of features and functionality. In those instances where services are being logically tied together, the provision of those services should not depend on the existence of an end user focused Web site. Moreover, the provision of services must be secure and deployable in intranet, extranet, and internet environments, even when they are logically tied together.